<!--
/*
 *	Author: José Delgado Pérez
 *	Correo: josedelgado@ula.ve
 *	Fecha: 27/03/2012
 *	Encoding: UTF-8
 *  Comentario: Objeto Profesor, posee los atributos de Carga Academica 
 *  que corresponden a todo profesosor univercitario segun el greglamento
 *  de evaluo de carga academica de la Universidad de Los Andes
 */
-->

<?php
class Profesor {
	
	private $nombre;
	private $cedula;
	private $materiasPregado;
	private $totalHorasPregado; 
	private $mateirasPostgrado;
	private $totalHorasPostgrado;
	private $cargaAcadémicaTutoriasTesisPregado;
	private $totalHorasTesisTutoriasTesisPregado;
	private $cargaAcadémicaTutoriasPasantias;
	private $totalHorasTutoriasPasantias;
	private $cargaAcadémicaTutoriasTesisPostgrado;
	private $totalHorasTutoriasTesisPostgrado;
	private $totalHorasTutorias;
	private $cargaServicioComunitario;
	private $totalHorasServicioComunitario;
	private $cargaInvestigacion;
	private $totalHorasInvestigacion;
	private $cargaExtencion;
	private $totalHorasExtencion;
	private $cargaAdministrativa;
	private $totalHorasAdministrativas;
	private $cargaGremial;
	private $totalHorasGremial;
	private $totalHoras;
	
	public function __construct($usuario){

		$DataBase = BD;
		$sql = "SELECT DISTINCT * FROM profesores WHERE cedula = '".$usuario."' "; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->nombre = $resultado[0]['nombre'];
		$this->cedula = $resultado[0]['cedula'];
		
		
		$sql = "SELECT DISTINCT nombreMateria, totalHoras, numSecciones, cargaAcademica 
		FROM materiasPregrado WHERE cedulaProfesor = '".$usuario."'"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->materiasPregado = $resultado;
		$horas = 0;
		foreach($resultado AS $clave => $value) {
			$horas = $horas + $value['cargaAcademica'];
		}
		$this->totalHorasPregado = $horas;
		
		$sql = "SELECT DISTINCT nombreMateria, totalHoras, numSecciones, cargaAcademica 
		FROM materiasPostgrado WHERE cedulaProfesor = '".$usuario."'"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->mateirasPostgrado = $resultado;
		$horas = 0;
		foreach($resultado AS $clave => $value) {
			$horas = $horas + $value['cargaAcademica'];
		}
		if($horas > 12) $horas = 12;
		$this->totalHorasPostgrado = $horas;
		
		$sql = "SELECT DISTINCT tituloTrabajo, nombreTesista, cedulaTesista 
		FROM tesisPregrado WHERE cedulaProfesor = '".$usuario."'"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->cargaAcadémicaTutoriasTesisPregado = $resultado;
		$horas = 0;
		foreach($resultado AS $clave => $value) {
			$horas = $horas + 3;
		}
		$this->totalHorasTesisTutoriasTesisPregado = $horas;
		
		$sql = "SELECT DISTINCT tituloTrabajo, nombreTesista, cedulaTesista 
		FROM pasantias WHERE cedulaProfesor = '".$usuario."'"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->cargaAcadémicaTutoriasPasantias = $resultado;
		$horas = 0;
		foreach($resultado AS $clave => $value) {
			$horas = $horas + 3;
		}
		$this->totalHorasTutoriasPasantias = $horas;
		
		$sql = "SELECT DISTINCT tituloTrabajo, nombreTesista, cedulaTesista 
		FROM tesisPostgrado WHERE cedulaProfesor = '".$usuario."'"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->cargaAcadémicaTutoriasTesisPostgrado = $resultado;
		$horas = 0;
		foreach($resultado AS $clave => $value) {
			$horas = $horas + 3;
		}
		$this->totalHorasTutoriasTesisPostgrado = $horas;
		
		$horas = $this->totalHorasTesisTutoriasTesisPregado + $this->totalHorasTutoriasPasantias + $this->totalHorasTutoriasTesisPostgrado;
		if($horas > 9) $horas = 9;
		$this->totalHorasTutorias = $horas;
		
		$sql = "SELECT DISTINCT nombreTutoriado, cedulaTesista, proyecto, comunidad  
		FROM servicioComunitario WHERE cedulaProfesor = '".$usuario."'"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->cargaServicioComunitario = $resultado;
		$horas = 0;
		foreach($resultado AS $clave => $value) {
			$horas = $horas + 2;
		}
		if($horas > 6) $horas = 6;
		$this->totalHorasServicioComunitario = $horas;
		
		$sql = "SELECT DISTINCT actividad, ppi, pei, totalHoras  
		FROM investigacion WHERE cedulaProfesor = '".$usuario."'"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->cargaInvestigacion = $resultado[0];
		$horas = 0;
		$this->totalHorasInvestigacion = $horas + $resultado[0]['totalHoras'];
		
		$sql = "SELECT DISTINCT actividad, numOficio, totalHoras  
		FROM extencion WHERE cedulaProfesor = '".$usuario."'"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->cargaExtencion = $resultado[0];
		$horas = 0;
		$this->totalHorasExtencion = $horas + $resultado[0]['totalHoras'];
		
	
		$sql = "SELECT DISTINCT dca.actividad, dca.genero, dca.totalHoras  
		FROM cargaAdministrativa AS ca, cargosAdministrativoas AS dca WHERE ca.cedulaProfesor = '".$usuario."' 
		and dca.id = ca.idCargo"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->cargaAdministrativa = $resultado;
		$horas = 0;
		foreach($resultado AS $clave => $value) {
			$horas = $horas + $value['totalHoras'];
		}
		$this->totalHorasAdministrativas = $horas;
		
		$sql = "SELECT DISTINCT cargo, totalHoras  
		FROM cargaGremial WHERE cedulaProfesor = '".$usuario."'"; 
		$resultado = $this->consultar($sql, $DataBase);
		$this->cargaGremial = $resultado;
		$horas = 0;
		foreach($resultado AS $clave => $value) {
			$horas = $horas + $value['totalHoras'];
		}
		$this->totalHorasGremial = $horas;
		
		$this->totalHoras = $this->totalHorasAdministrativas + $this->totalHorasExtencion +
		$this->totalHorasGremial + $this->totalHorasInvestigacion + $this->totalHorasPostgrado +
		$this->totalHorasPregado + $this->totalHorasServicioComunitario + $this->totalHorasTutorias;
	}
	
	# DEFINICION DE METODOS SET
	public function setNombre($nombre){
		$this->nombre = $nombre;
	}
	
	public function setCedula($cedula){
		$this->cedula = $cedula;
	}
	
	public function setTotalHorasPregrado($totalHorasPregrado){
		$this->totalHorasPregado = $totalHorasPregrado;
	}
	
	public function setTotalHorasPostgrado($totalHorasPostgrado){
		$this->totalHorasPostgrado = $totalHorasPostgrado;
	}
	
	public function setMateriasPregrado($materiasPregrado){
		$this->materiasPregado = $materiasPregrado;
	}
	
	public function setMateriasPostgrado($materiasPostgrado){
		$this->mateirasPostgrado = $materiasPostgrado;
	} 
	
	public function setTotalHorasTutorias($totalHorasTutorias){
		$this->totalHorasTutorias = $totalHorasTutorias;
	}
	
	public function setCargaAcadémicaTutoriasTesisPregado($cargaAcadémicaTutoriasTesisPregado){
		$this->cargaAcadémicaTutoriasTesisPregado = $cargaAcadémicaTutoriasTesisPregado;
	}
	
	public function setCargaAcadémicaTutoriasPasantias($cargaAcadémicaTutoriasPasantias){
		$this->cargaAcadémicaTutoriasPasantias = $cargaAcadémicaTutoriasPasantias;
	}
	
	public function setCargaAcadémicaTutoriasTesisPostgrado($cargaAcadémicaTutoriasTesisPostgrado){
		$this->cargaAcadémicaTutoriasTesisPostgrado = $cargaAcadémicaTutoriasTesisPostgrado;
	}
	
	public function setCargaServicioComunitario($cargaServicioComunitario){
		$this->cargaServicioComunitario = $cargaServicioComunitario;
	}
	
	public function setTotalHorasServicioComunitario($totalHorasServicioComunitario){
		return $this->totalHorasServicioComunitario = $totalHorasServicioComunitario;
	}
	
	public function setCargaInvestigacion($cargaInvestigacion){
		$this->cargaInvestigacion = $cargaInvestigacion;
	}
	
	public function setTotalHorasInvestigacion($totalHorasInvestigacion){
		$this->totalHorasInvestigacion = $totalHorasInvestigacion;
	}
	
	public function setCargaExtencion($cargaExtencion){
		$this->cargaExtencion = $cargaExtencion;
	}
	
	public function setTotalHorasExtencion($totalHorasExtencion){
		$this->totalHorasExtencion = $totalHorasExtencion;
	}
	
	public function setCargaAdministratavia($cargaAdministratica){
		$this->cargaAdministrativa = $cargaAdministratica;
	}
	
	public function setTotalHorasAdministrativas($totalHorasAdministrativas){
		$this->totalHorasAdministrativas = $totalHorasAdministrativas;
	}
	
	public function setCargaGremial($cargaGremial){
		$this->cargaGremial = $cargaGremial;
	}
	
	public function setTotalHorasGremial($totalHorasGremial){
		$this->totalHorasGremial = $totalHorasGremial;
	}
	
	public function setTotalHoras($totalHoras){
		$this->totalHoras = $totalHoras;
	}
	
	# DEFINICION DE METODOS GET
	public function getNombre(){
		return $this->nombre;
	}
	
	public function getCedula(){
		return $this->cedula;
	}
	
	public function getTotalHorasPregrado(){
		return $this->totalHorasPregado;
	}
	
	public function getTotalHorasPostgrado(){
		return $this->totalHorasPostgrado;
	}
	
	public function getMateriasPregrado(){
		return $this->materiasPregado;
	}
	
	public function getMateriasPostgrado(){
		return $this->mateirasPostgrado;
	}
	
	public function getTotalHorasTutorias(){
		return $this->totalHorasTutorias;
	}
	
	public function getCargaAcadémicaTutoriasTesisPregado(){
		return $this->cargaAcadémicaTutoriasTesisPregado;
	}
	
	public function getCargaAcadémicaTutoriasPasantias(){
		return $this->cargaAcadémicaTutoriasPasantias;
	}
	
	public function getCargaAcadémicaTutoriasTesisPostgrado(){
		return $this->cargaAcadémicaTutoriasTesisPostgrado;
	}
	
	public function getCargaServicioComunitario(){
		return $this->cargaServicioComunitario;
	}

	public function getTotalHorasServicioComunitario(){
		return $this->totalHorasServicioComunitario;
	}
	
	public function getCargaInvestigacion(){
		return $this->cargaInvestigacion;
	}

	public function getTotalHorasInvestigacion(){
		return $this->totalHorasInvestigacion;
	}
	
	public function getCargaExtencion(){
		return $this->cargaExtencion;
	}
	
	public function getTotalHorasExtencion(){
		return $this->totalHorasExtencion;
	}
	
	public function getCargaAdministrativa(){
		return $this->cargaAdministrativa;
	}
	
	public function getTotalHorasAdministrativas(){
		return $this->totalHorasAdministrativas;
	}
	
	public function getCargaGremial(){
		return $this->cargaGremial;
	}
	
	public function getTotalHorasGremial(){
		return $this->totalHorasGremial;
	}
	
	public function getTotalHoras(){
		return $this->totalHoras;
	}

	#RETORNA EL ARRAY de UNA CONSULTA A LA BD
	private function consultar($sql,$DataBase){
		$objConector = new Conectar($DataBase);	
		if(!$objConector->conectarGbd())
			die(APPS_ERROR_CONECTAR.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		if(!$objConector->seleccionarBd())
			die(APPS_ERROR_BD.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		$objConector->iniciarTransaccion();
		$objConector->ejecutarQuery($sql);
		$objConector->culminarTransaccion();
		$objConector->obtenerArrayRecords();
		$array = $objConector->getFilas();
		$objConector->closeConeccion();
		return $array;
	}
	
	#ELIMINA EL REGISTRO 
	private  function eliminar($sql,$DataBase){
		$objConector = new Conectar($DataBase);	
		if(!$objConector->conectarGbd())
			die(APPS_ERROR_CONECTAR.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		if(!$objConector->seleccionarBd())
			die(APPS_ERROR_BD.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		$objConector->iniciarTransaccion();
		$objConector->ejecutarQuery($sql);
		$objConector->culminarTransaccion();
	}
	
	#RETORNA EL NUMERO DE REGISTROS EN LA CONSULTA
	private  function numeroRegistros($sql,$DataBase){
		$objConector = new Conectar($DataBase);	
		if(!$objConector->conectarGbd())
			die(APPS_ERROR_CONECTAR.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		if(!$objConector->seleccionarBd())
			die(APPS_ERROR_BD.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
		$objConector->iniciarTransaccion();
		$objConector->ejecutarQuery($sql);
		$objConector->culminarTransaccion();
		$numeroRegistro = $objConector-> obtenerNumRecords();
		$objConector->closeConeccion();
		return $numeroRegistro;
	}
	
	#EJECUTA UN INSERT INSERT SQL EN LA BD
	private function guardar($DataBase,$sql){
        $objConector = new Conectar($DataBase);
        if(!$objConector->conectarGbd())
        die(APPS_ERROR_CONECTAR.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
        if(!$objConector->seleccionarBd())
        die(APPS_ERROR_BD.' LINEA: '.__LINE__.' ARCHIVO: '.__FILE__);
        $objConector->iniciarTransaccion();
        $objConector->ejecutarQuery($sql);
        $objConector->culminarTransaccion();
        $objConector->closeConeccion();

    }

	#DESTRUCTOR
	public function __destruct() {
	}
		
}
?>